Uniication of Register Allocation and Instruction Scheduling in Compilers for Fine-grain Parallel Architectures Unification of Register Allocation and Instruction Scheduling in Compilers for Fine-grain Parallel Architectures
نویسنده
چکیده
The interaction between instruction scheduling and register allocation has signiicant impact on the quality of code generated, particularly in compilers targeting ne grain parallel architectures. The problem results from the fact that instruction scheduling and register allocation have connicting goals. Instruction scheduling tries to maximize parallelism by scheduling as many instructions as possible in parallel, which requires a large number of values to be held in registers for short periods of time. On the other hand, register allocation attempts to hold a small number of values in registers for long periods of time, resulting in limiting the number of instructions that can be scheduled in parallel. This dissertation presents a method for unifying these tasks by allocating all needed registers and functional units to an instruction simultaneously. No previous technique has achieved this degree of integration between the two tasks. The work in this dissertation is based on a framework consisting of three components: a technique for measuring a program's demand for all resources, a single intermediate representation of the measured demands, and a set of transformations that perform resource allocation. The approach taken in this work is based on a new paradigm of resource allocation, called Measure and Reduce in which the resource requirements of the program are measured and excessive demands are removed by reduction transformations. The information computed during the measurement of the demands for each resource is incorporated into a single intermediate representation. The reduction transformations for all resources operate on this intermediate representation, allowing transformations for diierent types of resources to be performed simultaneously. Therefore, an instruction can be allocated all resources it needs at once, resulting in uniied resource allocation. The intermediate representation is based on a hierarchical form of dependence DAGs, enabling the transformations to naturally handle instruction level parallelism. In particular, the register transformations form a framework for live range splitting in the absence of a full ordering of the instructions, as required by previous splitting techniques. Application of the reduction transformations is rst demonstrated by a heuristic for performing register allocation during local instruction scheduling. Global register allocation is performed by exploiting the hierarchical nature of the intermediate representation. Heuristics are also given for using the transformations during global code motion, resulting in uniied allocation and a more exible use of available resources than previous resource constrained techniques. The results of numerous experiments comparing the new techniques to previous attempts at …
منابع مشابه
Mutation Scheduling: A Unified Approach to Compiling for Fine-Grain Parallelism
Trade-o s between code selection, register allocation, and instruction scheduling are inherently interdependent, especially when compiling for ne-grain parallel architectures. However, the conventional approach to compiling for such machines arbitrarily separates these phases so that decisions made during any one phase place unnecessary constraints on the remaining phases. Mutation Scheduling a...
متن کاملMutation Scheduling : A Uni ed Approach toCompiling for Fine - Grain Parallelism ?
Trade-oos between code selection, register allocation, and instruction scheduling are inherently interdependent, especially when compiling for ne-grain parallel architectures. However, the conventional approach to compiling for such machines arbitrarily separates these phases so that decisions made during any one phase place unnecessary constraints on the remaining phases. Mutation Scheduling a...
متن کاملUnification of Register Allocation and Instruction Scheduling in Compilers for Fine-grain Parallel Architectures
The i n teraction between instruction scheduling a n d register allocation has signiicant impact on the quality o f c o d e generated, particularly in compilers targeting g n e grain parallel architectures. The problem results from the fact that instruction scheduling a n d register allocation have connicting goals. Instruction scheduling tries to m aximize parallelism by s c heduling a s m any...
متن کاملCode Generation Techniques for Irregular Architectures
The fast development of many different ASIPs make demands of rapid availability of dedicated compilers. Fast retargeting is a major aspect, while fast compilation times are of minor importance. There are also new demands in the quality of the generated code. Irregular properties together with fine–grain parallelism given by a target architecture have to be effectively supported by the compiler....
متن کاملURSA: A Unified ReSource Allocator for Registers and Functional Units in VLIW Architectures
The division of instruction scheduling and register allocation and assignment into separate phases can adversely affect the performance of these tasks and thus the quality of the code generated for load/store fine grained parallel architectures. Improved performance in one phase can deteriorate the performance of the other phase, possibly resulting in poorer overall performance. In this paper w...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2006